//============================================================================================
/**
 * @file	gametime.h
 * @brief	ゲーム内時間進行用ヘッダ
 * @author	tamada	GAME FREAK Inc.
 * @date	2006.02.09
 *
 * 2006.06.15	セーブ領域内で移動！
 */
//============================================================================================
#ifndef	__GAMETIME_H__
#define	__GAMETIME_H__


//============================================================================================
//============================================================================================
#define GMTIME_SEC_MAX	( 3155759999 )	// 時間の最大値


//------------------------------------------------------------------
/**
 * @brief	ゲーム内時間用構造体定義
 */
//------------------------------------------------------------------
typedef struct {
	BOOL use_flag;		///<機能しているかどうかのフラグ
	RTCDate sv_date;	///<ゲーム内時間（日付）分単位のイベント更新に利用
	RTCTime sv_time;	///<ゲーム内時間（時間）分単位のイベント更新に利用
	u32 sv_day;			///<ゲーム内時間（日数）日単位のイベント更新に利用
	s64 start_sec;		///<ゲーム開始時間
	s64 clear_sec;		///<ゲームクリア時間
	u32 penalty_time;	///<時間変更に対するペナルティの時間（分単位）
}GMTIME;

extern void GMTIME_Init(GMTIME * tm);

extern GMTIME * SaveData_GetGameTime(SAVEDATA * sv);

//---------------------------------------------------------------------------
//ペナルティ時間制御関連
//
//ＤＳを変えたり、時間を変更した場合は「ペナルティ時間」として
//天候やエンカウント率の変化など特定の月日に起こるイベントをフックする。
//この時間は24時間続く。
//---------------------------------------------------------------------------
extern BOOL GMTIME_IsPenaltyMode(const GMTIME * gt);
extern void GMTIME_SetPenaltyTime(GMTIME * gt);
extern void GMTIME_CountDownPenaltyTime(GMTIME * gt, int diff_minute);


#endif	/* __GAMETIME_H__ */